iT邦幫忙

2022 iThome 鐵人賽

DAY 5
0
AI & Data

跟著黑蛋用Streamlit速成天文資料分析Web App系列 第 5

[4]:用NASA系外行星資料庫的API取得資料表

  • 分享至 

  • xImage
  •  

會議中,PM貳婰舞跟黑蛋說:「客戶對於我們之前透過NASA系外行星資料庫網站手動匯出的CSV檔,表示有太多不必要的欄位,希望聚焦幾個欄位且名稱要以中文呈現,他要求的欄位有『行星名稱』、『所屬恆星名稱』、『與地球的距離』、『行星軌道週期』、『行星質量』、『行星半徑』、『發現年份』、『發現方法』。」

黑蛋回說:「看來需要先過濾處理資料表,我會再研究看看是否有相關API可以取得資料,這樣就能以Python程式自動化產出整理過後的報表,若未來資料庫有新增行星資料,也不用透過網站手動下載,排程定期產出CSV檔即可。」

結束視訊會議後,他憶起之前在NASA系外行星資料庫網站首頁左下方有看到新舊版API的說明頁面入口:

新版API是基於Table Access Protocol(TAP)標準,其說明頁面除了描述API的使用方法,也說明各資料表欄位所代表的意義。這個API是使用Astronomical Data Query Language(ADQL)語法來查詢資料表並過濾欄位,該語法是基於SQL。

應客戶需求,黑蛋在API網址中用ADQL的select…from語法,查詢能一行綜觀同個行星所有欄位值的資料表「Planetary Systems Composite Parameters」,並選取所需欄位。他還發現在API中加入format=csv參數,就能在Python script中用Pandas的read_csv()函式,直接將API回傳的資料表讀進DataFrame中,以便將欄位名稱改成中文。最後,他用以下Python script自動匯出客戶此次要求的CSV檔。

# exoplanet_table_exporter.py
import pandas as pd
from datetime import datetime

def get_exoplanet_table_by_nasa_api():
    table_name = 'pscomppars'
    columns = 'pl_name,hostname,sy_dist,pl_orbper,pl_bmasse,pl_rade,disc_year,discoverymethod'
    nasa_exoplanet_archive_api = 'https://exoplanetarchive.ipac.caltech.edu/TAP/sync?query='
    nasa_exoplanet_archive_api += f'select+{columns}+from+{table_name}&format=csv'
    exoplanet_table = pd.read_csv(nasa_exoplanet_archive_api)
    exoplanet_table = exoplanet_table.rename(
        columns={
            'pl_name': '行星名稱',
            'hostname': '所屬恆星名稱',
            'sy_dist': '與地球的距離(單位:秒差距)',
            'pl_orbper': '行星軌道週期(單位:天)',
            'pl_bmasse': '行星質量(單位:地球質量)',
            'pl_rade': '行星半徑(單位:地球半徑)',
            'disc_year': '發現年份',
            'discoverymethod': '發現方法'
        }
    )
    exoplanet_table.sort_values(
        by='發現年份', ascending=False, inplace=True, ignore_index=True
    )

    return exoplanet_table

exoplanet_table = get_exoplanet_table_by_nasa_api()
exoplanet_table.to_csv(
    f"./exoplanet_table_{datetime.today().strftime('%Y%m%d')}.csv", index=False
)

此系列文由蘇羿豪撰寫,以「創用CC 姓名標示 4.0(CC BY 4.0)國際版授權條款」釋出。此系列文也同步在MattersMirror平台連載。


上一篇
[3]:初版一刷系外行星資料簡介app
下一篇
[5]:用Astroquery套件取得系外行星資料表
系列文
跟著黑蛋用Streamlit速成天文資料分析Web App30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言